FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }}
MAINTAINER {{ maintainer }}

{% import "macros.j2" as macros with context %}

{% if base_distro in ['fedora', 'centos', 'oraclelinux', 'rhel'] %}
    {% set openstack_base_packages = [
        'git',
        'iproute',
        'openssl'
    ] %}

{{ macros.install_packages(openstack_base_packages) }}

{% endif %}
{% if install_type == 'binary' %}
    {% if base_distro in ['fedora', 'centos', 'oraclelinux', 'rhel'] %}

# TODO(Allen) Remove python-dogpile-cache after the requirement of
# python-ironicclient is fixed.
        {% set openstack_base_packages = [
            'avahi-libs',
            'cups-libs',
            'fontconfig',
            'fontpackages-filesystem',
            'freetype',
            'initscripts',
            'libjpeg-turbo',
            'libpng',
            'libtomcrypt',
            'libtommath',
            'libX11',
            'libX11-common',
            'libXau',
            'libxcb',
            'libXext',
            'libXi',
            'libxslt',
            'libyaml',
            'MySQL-python',
            'Percona-Server-shared-56',
            'pyOpenSSL',
            'pyparsing',
            'python2-cffi',
            'python2-crypto',
            'python2-cryptography',
            'python2-debtcollector',
            'python2-eventlet',
            'python2-fasteners',
            'python2-funcsigs',
            'python2-futurist',
            'python2-greenlet',
            'python2-iso8601',
            'python2-msgpack',
            'python2-oslo-concurrency',
            'python2-oslo-config',
            'python2-oslo-context',
            'python2-oslo-db',
            'python2-oslo-i18n',
            'python2-oslo-log',
            'python2-oslo-messaging',
            'python2-oslo-middleware',
            'python2-oslo-policy',
            'python2-oslo-serialization',
            'python2-oslo-service',
            'python2-oslo-utils',
            'python2-pika',
            'python2-pika_pool',
            'python2-positional',
            'python2-pyasn1',
            'python2-PyMySQL',
            'python-alembic',
            'python-amqp',
            'python-anyjson',
            'python-barbicanclient',
            'python-beaker',
            'python-cachetools',
            'python-ceilometerclient',
            'python-cliff',
            'python-cmd2',
            'python-congressclient',
            'python-contextlib2',
            'python-dateutil',
            'python-decorator',
            'python-designateclient',
            'python-dogpile-cache',
            'python-editor',
            'python-enum34',
            'python-extras',
            'python-fixtures',
            'python-futures',
            'python-glanceclient',
            'python-heatclient',
            'python-httplib2',
            'python-idna',
            'python-inotify',
            'python-ipaddress',
            'python-ironicclient',
            'python-jsonpatch',
            'python-jsonpointer',
            'python-jsonschema',
            'python-keyring',
            'python-keystoneauth1',
            'python-keystoneclient',
            'python-keystonemiddleware',
            'python-kombu',
            'python-linecache2',
            'python-lxml',
            'python-magnumclient',
            'python-mako',
            'python-manilaclient',
            'python-memcached',
            'python-migrate',
            'python-mimeparse',
            'python-mistralclient',
            'python-monotonic',
            'python-muranoclient',
            'python-netaddr',
            'python-netifaces',
            'python-neutronclient',
            'python-novaclient',
            'python-openstackclient',
            'python-paste',
            'python-paste-deploy',
            'python-pbr',
            'python-pip',
            'python-ply',
            'python-posix_ipc',
            'python-prettytable',
            'python-pycparser',
            'python-PyMySQL',
            'python-repoze-lru',
            'python-requests',
            'python-retrying',
            'python-routes',
            'python-saharaclient',
            'python-simplejson',
            'python-sqlalchemy',
            'python-sqlparse',
            'python-stevedore',
            'python-swiftclient',
            'python-tempita',
            'python-testtools',
            'python-traceback2',
            'python-troveclient',
            'python-unicodecsv',
            'python-unittest2',
            'python-urllib3',
            'python-warlock',
            'python-webob',
            'python-wrapt',
            'python-zaqarclient',
            'PyYAML',
            'systemd-sysv',
            'sysvinit-tools',
            'tcp_wrappers-libs'
        ] %}
    {% elif base_distro in ['ubuntu'] %}

# This will prevent questions from being asked during the install
ENV DEBIAN_FRONTEND noninteractive
        {% set openstack_base_packages = [
            'python-barbicanclient',
            'python-ceilometerclient',
            'python-congressclient',
            'python-designateclient',
            'python-heatclient',
            'python-ironicclient',
            'python-magnumclient',
            'python-manilaclient',
            'python-memcache',
            'python-mistralclient',
            'python-muranoclient',
            'python-pip',
            'python-saharaclient',
            'python-swiftclient',
            'python-troveclient',
            'python-zaqarclient',
            'python-openstackclient',
            'python-pymysql',
            'python-keystoneclient',
            'python-oslo.log',
            'openssl',
            'patch'
        ] %}
    {% endif %}

{{ macros.install_packages(openstack_base_packages | customizable("packages")) }}

{% elif install_type == 'source' %}
    {% if base_distro in ['fedora', 'centos', 'oraclelinux', 'rhel'] %}
        {% set openstack_base_packages = [
            'gcc',
            'gcc-c++',
            'libffi-devel',
            'libxml2-devel',
            'libxslt-devel',
            'libyaml-devel',
            'MariaDB-devel',
            'openldap-devel',
            'openssl-devel',
            'postgresql',
            'postgresql-devel',
            'python-devel',
            'sqlite-devel'
        ] %}
    {% elif base_distro in ['ubuntu', 'debian'] %}
        {% set openstack_base_packages = [
            'ca-certificates',
            'build-essential',
            'python-dev',
            'libssl-dev',
            'libmariadbclient-dev',
            'libxslt1-dev',
            'libffi-dev',
            'libxml2-dev',
            'libyaml-dev',
            'libz-dev',
            'pkg-config',
            'git'
        ] %}
    {% endif %}

{{ macros.install_packages(openstack_base_packages | customizable("packages")) }}
ADD openstack-base-archive /openstack-base-source
RUN ln -s openstack-base-source/* /requirements \
    && mkdir -p /var/lib/kolla \
    && curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py \
    && python get-pip.py \
    && rm get-pip.py \
    && pip --no-cache-dir install -U virtualenv \
    && virtualenv --system-site-packages /var/lib/kolla/venv \
    && /var/lib/kolla/venv/bin/pip --no-cache-dir install --upgrade -c requirements/upper-constraints.txt \
        Babel \
        Mako \
        MarkupSafe \
        Paste \
        PasteDeploy \
        PyYAML \
        Routes \
        SQLAlchemy \
        Tempita \
        WebOb \
        alembic \
        amqp \
        anyjson \
        appdirs \
        cachetools \
        cliff \
        cmd2 \
        contextlib2 \
        debtcollector \
        decorator \
        enum34 \
        eventlet \
        fasteners \
        funcsigs \
        functools32 \
        futures \
        futurist \
        greenlet \
        iso8601 \
        jinja2 \
        jsonpatch \
        jsonpointer \
        jsonschema \
        keystoneauth1 \
        keystonemiddleware \
        kombu \
        monotonic \
        msgpack-python \
        netaddr \
        netifaces \
        os-client-config \
        oslo.concurrency \
        oslo.config \
        oslo.context \
        oslo.db \
        oslo.i18n \
        oslo.log \
        oslo.messaging \
        oslo.middleware \
        oslo.policy \
        oslo.serialization \
        oslo.service \
        oslo.utils \
        pbr \
        pika \
        pika-pool \
        positional \
        prettytable \
        pycadf \
        pycrypto \
        pyinotify \
        pymysql \
        pyparsing \
        python-barbicanclient \
        python-ceilometerclient \
        python-cinderclient \
        python-congressclient \
        python-dateutil \
        python-designateclient \
        python-editor \
        python-glanceclient \
        python-heatclient \
        python-ironicclient \
        python-keystoneclient \
        python-magnumclient \
        python-manilaclient \
        python-memcached \
        python-mistralclient \
        python-muranoclient \
        python-neutronclient \
        python-novaclient \
        python-openstackclient \
        python-saharaclient \
        python-swiftclient \
        python-troveclient \
        python-zaqarclient \
        pytz \
        repoze.lru \
        requests \
        requestsexceptions \
        retrying \
        simplejson \
        six \
        sqlalchemy-migrate \
        sqlparse \
        stevedore \
        unicodecsv \
        warlock \
        wrapt

ENV PATH /var/lib/kolla/venv/bin:$PATH

{% endif %}

{% block openstack_base_footer %}{% endblock %}
{% block footer %}{% endblock %}
